package pl.poznan.put.cs.idss.students.coolring.core;

import java.awt.Image;
import java.util.List;

import pl.poznan.put.cs.idss.students.coolring.ui.components.ColoredPoint;

/**
 * Interfejs dla algorytmów kolorujących - powinien być implementowany przez
 * klasy służące do kolorowania obrazu.
 * 
 * @author Kornel Lewandowski
 * 
 */
public interface IAlgorithm {

	/**
	 * Metoda służąca do przesyłania obrazu, który ma zostać pokolorowany.
	 * 
	 * @param bwImage
	 */
	public void setImage(Image bwImage);

	/**
	 * Metoda ustalająca listę plików zawierających oznaczenia kolorów.
	 * 
	 * @param pointsList
	 */
	public void setPointsList(List<ColoredPoint> pointsList);

	/**
	 * Metoda rozpoczynająca działanie algorytmu.
	 */
	public void run();

	/**
	 * Metoda zwracająca postęp algorytmu (liczba z przedziału 0-1). Jeśli
	 * zwróci warość 1 algorytm jest uznawany za zakończony.
	 * 
	 * @return
	 */
	public double getProgress();

	/**
	 * Metoda zwracająca obraz będący wyikiem algorytmu.
	 * 
	 * @return
	 */
	public Image getReslt();

}
